home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 1843 / 1843.xpi / content / firebug / jsonViewer.js < prev    next >
Text File  |  2010-01-15  |  3KB  |  100 lines

  1. /* See license.txt for terms of usage */
  2.  
  3. FBL.ns(function() { with (FBL) {
  4.  
  5. // ************************************************************************************************
  6.  
  7. // List of JSON content types.
  8. var contentTypes =
  9. {
  10.     "text/plain": 1,
  11.     "text/javascript": 1,
  12.     "text/x-javascript": 1,
  13.     "text/json": 1,
  14.     "text/x-json": 1,
  15.     "application/json": 1,
  16.     "application/x-json": 1,
  17.     "application/javascript": 1,
  18.     "application/x-javascript": 1
  19. };
  20.  
  21. // ************************************************************************************************
  22. // Model implementation
  23.  
  24. Firebug.JSONViewerModel = extend(Firebug.Module,
  25. {
  26.     dispatchName: "jsonViewer",
  27.     initialize: function()
  28.     {
  29.         Firebug.NetMonitor.NetInfoBody.addListener(this);
  30.  
  31.         // Used by Firebug.DOMPanel.DirTable domplate.
  32.         this.toggles = {};
  33.     },
  34.  
  35.     shutdown: function()
  36.     {
  37.         Firebug.NetMonitor.NetInfoBody.removeListener(this);
  38.     },
  39.  
  40.     initTabBody: function(infoBox, file)
  41.     {
  42.         dispatch(this.fbListeners, "onParseJSON", [file]);
  43.  
  44.         // The JSON is still no there, try to parse most common cases.
  45.         if (!file.jsonObject)
  46.         {
  47.             if (this.isJSON(safeGetContentType(file.request)))
  48.                 file.jsonObject = this.parseJSON(file);
  49.         }
  50.  
  51.         // The jsonObject is created so, the JSON tab can be displayed.
  52.         if (file.jsonObject && hasProperties(file.jsonObject))
  53.         {
  54.             Firebug.NetMonitor.NetInfoBody.appendTab(infoBox, "JSON",
  55.                 $STR("jsonviewer.tab.JSON"));
  56.  
  57.         }
  58.     },
  59.  
  60.     isJSON: function(contentType)
  61.     {
  62.         if (!contentType)
  63.             return false;
  64.  
  65.         contentType = contentType.split(";")[0];
  66.         contentType = trim(contentType);
  67.         return contentTypes[contentType];
  68.     },
  69.  
  70.     // Update listener for TabView
  71.     updateTabBody: function(infoBox, file, context)
  72.     {
  73.         var tab = infoBox.selectedTab;
  74.         var tabBody = infoBox.getElementsByClassName("netInfoJSONText").item(0);
  75.         if (!hasClass(tab, "netInfoJSONTab") || tabBody.updated)
  76.             return;
  77.  
  78.         tabBody.updated = true;
  79.  
  80.         if (file.jsonObject) {
  81.             Firebug.DOMPanel.DirTable.tag.replace(
  82.                  {object: file.jsonObject, toggles: this.toggles}, tabBody);
  83.         }
  84.     },
  85.  
  86.     parseJSON: function(file)
  87.     {
  88.         var jsonString = new String(file.responseText);
  89.         return parseJSONString(jsonString, "http://" + file.request.originalURI.host);
  90.     },
  91. });
  92.  
  93. // ************************************************************************************************
  94. // Registration
  95.  
  96. Firebug.registerModule(Firebug.JSONViewerModel);
  97.  
  98. // ************************************************************************************************
  99. }});
  100.